/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package CRUD;

import Beans.BeanPessoa;
import Conexao.ConexaoBanco;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Marcos
 */
public class CRUDPessoa {

    public Connection conexao;

    public CRUDPessoa() throws SQLException {
        this.conexao = ConexaoBanco.getConexao();
    }

    public void adiciona(BeanPessoa BP) throws SQLException {
        String sql = "insert into pessoa(cod_pessoa, nom_pessoa, dt_cadastro, dt_nasc, idade, sexo, est_civil, cor_pele, "
                + "naturalidade, identidade, cpf, email, endereco, complemento, bairro, cod_cidade, telefone, celular, "
                + "tp_sangue, observacao, tp_pessoa)" + "values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
        PreparedStatement stmt = conexao.prepareStatement(sql);
        stmt.setString(1, BP.getCod_pessoa());
        stmt.setString(2, BP.getNom_pessoa());
        stmt.setDate(3, new java.sql.Date(BP.getDt_cadastro().getTime()));
        stmt.setDate(4, new java.sql.Date(BP.getDt_nasc().getTime()));
        stmt.setInt(5, BP.getIdade());
        stmt.setString(6, BP.getSexo());
        stmt.setString(7, BP.getEst_civil());
        stmt.setString(8, BP.getCor_pele());
        stmt.setString(9, BP.getNaturalidade());
        stmt.setString(10, BP.getIdentidade());
        stmt.setString(11, BP.getCpf());
        stmt.setString(12, BP.getEmail());
        stmt.setString(13, BP.getEndereco());
        stmt.setString(14, BP.getComplemento());
        stmt.setString(15, BP.getBairro());
        stmt.setInt(16, BP.getCod_cidade());
        stmt.setString(17, BP.getTelefone());
        stmt.setString(18, BP.getCelular());
        stmt.setString(19, BP.getTp_sangue());
        stmt.setString(20, BP.getObservacao());      
        stmt.setString(21, BP.getTp_pessoa());      
        stmt.execute();
        stmt.close();
    }
    
    public List<BeanPessoa> getListaPessoaCod(String nom_pessoa) throws SQLException {
        String sql = "select * from pessoa where nom_pessoa = ?";       

        PreparedStatement stmt = this.conexao.prepareStatement(sql);
        stmt.setString(1, nom_pessoa);
        ResultSet rs = stmt.executeQuery();
        List<BeanPessoa> ListaPessoa = new ArrayList<BeanPessoa>();
        while (rs.next()) {
            BeanPessoa BC = new BeanPessoa();
            BC.setCod_pessoa(rs.getString("cod_pessoa"));                                
            BC.setEndereco(rs.getString("endereco"));                                
            BC.setTelefone(rs.getString("telefone"));                                
            BC.setCelular(rs.getString("celular"));                                
            BC.setCpf(rs.getString("cpf"));                                
            ListaPessoa.add(BC);
        }
        rs.close();
        stmt.close();
        return ListaPessoa;
    }     
    
    public List<BeanPessoa> getListaPaciente() throws SQLException {
        String sql = "select nom_pessoa from pessoa where tp_pessoa = 'P' order by nom_pessoa";       

        PreparedStatement stmt = this.conexao.prepareStatement(sql);        
        ResultSet rs = stmt.executeQuery();
        List<BeanPessoa> ListaPessoa = new ArrayList<BeanPessoa>();
        while (rs.next()) {
            BeanPessoa BC = new BeanPessoa();
            //BC.setCod_pessoa(rs.getString("cod_pessoa"));
            BC.setNom_pessoa(rs.getString("nom_pessoa"));                        
            ListaPessoa.add(BC);
        }
        rs.close();
        stmt.close();
        return ListaPessoa;
    }
    
    public List<BeanPessoa> getListaMedico() throws SQLException {
        String sql = "select nom_pessoa from pessoa where tp_pessoa = 'M' order by nom_pessoa";       

        PreparedStatement stmt = this.conexao.prepareStatement(sql);        
        ResultSet rs = stmt.executeQuery();
        List<BeanPessoa> ListaPessoa = new ArrayList<BeanPessoa>();
        while (rs.next()) {
            BeanPessoa BC = new BeanPessoa();
            //BC.setCod_pessoa(rs.getString("cod_pessoa"));
            BC.setNom_pessoa(rs.getString("nom_pessoa"));                        
            ListaPessoa.add(BC);
        }
        rs.close();
        stmt.close();
        return ListaPessoa;
    }
    
    public List<BeanPessoa> getListaPacienteNome(String nome) throws SQLException {
        String sql = "select * from pessoa where nom_pessoa like ?";       

        PreparedStatement stmt = this.conexao.prepareStatement(sql);
        stmt.setString(1, nome);
        //stmt.setString(2, nome);
        ResultSet rs = stmt.executeQuery();
        List<BeanPessoa> ListaPessoa = new ArrayList<BeanPessoa>();
        while (rs.next()) {
            BeanPessoa BC = new BeanPessoa();
            BC.setCod_pessoa(rs.getString("cod_pessoa"));
            BC.setNom_pessoa(rs.getString("nom_pessoa"));            
            BC.setDt_cadastro(rs.getDate("dt_cadastro"));           
            BC.setDt_nasc(rs.getDate("dt_nasc"));           
            BC.setIdade(rs.getInt("idade"));           
            BC.setSexo(rs.getString("sexo"));           
            BC.setEst_civil(rs.getString("est_civil"));           
            BC.setCor_pele(rs.getString("cor_pele"));           
            BC.setNaturalidade(rs.getString("naturalidade"));           
            BC.setIdentidade(rs.getString("identidade"));           
            BC.setCpf(rs.getString("cpf"));           
            BC.setEmail(rs.getString("email"));           
            BC.setEndereco(rs.getString("endereco"));           
            BC.setComplemento(rs.getString("complemento"));           
            BC.setBairro(rs.getString("bairro"));           
            BC.setTelefone(rs.getString("telefone"));           
            BC.setCelular(rs.getString("celular"));           
            BC.setTp_sangue(rs.getString("tp_sangue"));           
            BC.setObservacao(rs.getString("observacao"));           
            ListaPessoa.add(BC);
        }
        rs.close();
        stmt.close();
        return ListaPessoa;
    } 
    
    public List<BeanPessoa> getListaPessoaCPF(String cpf) throws SQLException {
        String sql = "select * from pessoa where cod_pessoa like ?";       

        PreparedStatement stmt = this.conexao.prepareStatement(sql);
        stmt.setString(1, cpf);
        //stmt.setString(2, nome);
        ResultSet rs = stmt.executeQuery();
        List<BeanPessoa> ListaPessoa = new ArrayList<BeanPessoa>();
        while (rs.next()) {
            BeanPessoa BC = new BeanPessoa();
            BC.setCod_pessoa(rs.getString("cod_pessoa"));
            BC.setNom_pessoa(rs.getString("nom_pessoa"));            
            BC.setDt_cadastro(rs.getDate("dt_cadastro"));            
            ListaPessoa.add(BC);
        }
        rs.close();
        stmt.close();
        return ListaPessoa;
    }
}
